home *** CD-ROM | disk | FTP | other *** search
Text File | 1994-04-24 | 6.0 KB | 175 lines | [TEXT/MPCC] |
- $$Message MM AEs, mm:mmAEs$Prototype.name$.cp
- $$File mm:mmAEs$Prototype.name$.cp
- /* mmAEs$Prototype.name$ AppleEvents */
- /* $CopyRight$ */
-
- /*
- Name: mmAEs$Prototype.name$.c
- Function: AppleEvents for the Marksman™ specific code.
- History: $Date$ Original by $Author$
- */
-
-
- #include "mmCommon$Prototype.name$.h" /* Common */
- #include "Common$Prototype.name$.h" /* Common */
-
- static OSErr OpenDocEventHandler(AppleEvent *message,AppleEvent *reply);
-
- static OSErr PrintDocEventHandler(AppleEvent *message,AppleEvent *reply);
-
- /* ======================================================= */
- /* ======================================================= */
-
- /* Routine: MissedAnyParameters */
- /* Purpose: Used to check for any unread required parameters. */
- /* Returns true if we missed at least one */
-
- Boolean MissedAnyParameters(AppleEvent *message)
- {
- OSErr err; /* Error */
- DescType ignoredActualType; /* Descriptor */
- AEKeyword missedKeyword; /* Key word */
- Size ignoredActualSize; /* Size */
- EventRecord event; /* Event */
-
-
- err = AEGetAttributePtr(message,keyMissedKeywordAttr,typeKeyword,&ignoredActualType,(Ptr)&missedKeyword,sizeof(AEKeyword),&ignoredActualSize);/* */
-
- /* No error means that we found some unused parameters. */
- if (err == noErr) /* See if any errors. */
- {
- event.message = *(long *)&ignoredActualType;
- event.where = *(Point *)&missedKeyword;
- err = errAEEventNotHandled;
- }
- return(err != errAEDescNotFound); /* Return possible error */
- }
-
- /* ======================================================= */
-
- /* Routine: OpenDocEventHandler */
- /* Purpose: Called when we recieve an AppleEvent with an ID of 'kAEOpenDocuments'. */
- /* This routine gets the direct parameter, parses it up into little FSSpecs, and opens each indicated file */
-
- static OSErr OpenDocEventHandler(AppleEvent *message, AppleEvent *reply)
- {
- OSErr err; /* Error */
- AEDesc theDesc; /* Descriptor */
- FSSpec theFSSpec; /* File Spec */
- short ItemNumber; /* Index */
- long numFilesToOpen; /* Number of files */
- AEKeyword ignoredKeyWord; /* Key word */
- DescType ignoredType; /* Descriptor type */
- Size ignoredSize; /* Size */
-
-
- err = noErr; /* No errors yet */
- theDesc.dataHandle = nil; /* No data yet */
-
- err = AEGetParamDesc(message,keyDirectObject,typeAEList,&theDesc);/* Get it */
- if (err == noErr) /* See if any errors */
- {
- if (!MissedAnyParameters(message)) /* See if missing parameters */
- {
- err = AECountItems(&theDesc,&numFilesToOpen);/* Get number of files to do */
- if (err == noErr) /* See if any errors */
- {
- for (ItemNumber=1; ItemNumber <= numFilesToOpen; ++ItemNumber)/* */
- {
- err = AEGetNthPtr(&theDesc,ItemNumber,typeFSS,&ignoredKeyWord,&ignoredType,(Ptr)&theFSSpec,sizeof(FSSpec),&ignoredSize);/* Get it */
- if (err == noErr) /* See if any errors */
- {
- AE_OpenThisFile(&theFSSpec,ItemNumber,numFilesToOpen);/* Call the user open routine */
- }
- }
- }
- }
- }
- return(err); /* Return possible error */
- }
-
- /* ======================================================= */
-
- /* Routine: PrintDocEventHandler */
- /* Purpose: Called when we recieve an AppleEvent with an ID of 'kAEPrintDocuments'. */
- /* This routine gets the direct parameter, parses it up into little FSSpecs, and prints each indicated file */
-
- static OSErr PrintDocEventHandler(AppleEvent *message, AppleEvent *reply)
- {
- OSErr err; /* Error */
- AEDesc theDesc; /* Descriptor */
- FSSpec theFSSpec; /* File Spec */
- short ItemNumber; /* Index */
- long numFilesToOpen; /* Number of files */
- AEKeyword ignoredKeyWord; /* Key word */
- DescType ignoredType; /* Descriptor type */
- Size ignoredSize; /* Size */
-
- err = noErr; /* No errors yet */
- theDesc.dataHandle = nil; /* No data yet */
-
- err = AEGetParamDesc(message,keyDirectObject,typeAEList,&theDesc);/* Get it */
- if (err == noErr) /* See if any errors */
- {
- if (!MissedAnyParameters(message)) /* See if missing parameters */
- {
- err = AECountItems(&theDesc,&numFilesToOpen);/* Get number of files to do */
- if (err == noErr) /* See if any errors */
- {
- for (ItemNumber=1; ItemNumber <= numFilesToOpen; ++ItemNumber)/* */
- {
- err = AEGetNthPtr(&theDesc,ItemNumber,typeFSS,&ignoredKeyWord,&ignoredType,(Ptr)&theFSSpec,sizeof(FSSpec),&ignoredSize);/* Get it */
- if (err == noErr) /* See if any errors */
- {
- AE_PrintThisFile(&theFSSpec,ItemNumber,numFilesToOpen);/* Call the user print routine */
- }
- }
- }
- }
- }
- return(err); /* Return possible error */
- }
-
- /* ======================================================= */
-
- /* Routine: DispatchAppleEvent */
- /* Purpose: Figure out where to dispatch this event to. */
- /* See which way we should go */
-
- pascal OSErr DispatchAppleEvent(AppleEvent *message,AppleEvent *reply, long refcon)
- {
- OSErr err; /* Error */
-
- err = errAEEventNotHandled; /* Setup for an error */
-
- switch (refcon) /* See which one */
- {
- case kAEOpenApplication: /* Open application */
- err = AE_OpenedApplication(message,reply,refcon);
- break;
- case kAEOpenDocuments: /* Open documents */
- err = OpenDocEventHandler(message,reply);
- break;
- case kAEPrintDocuments: /* Print documents */
- err = PrintDocEventHandler(message,reply);
- break;
- case kAEQuitApplication: /* Close application */
- err = AE_QuittingApplication(message,reply,refcon);
- break;
- default: /* allow other buttons, trap for debug */
- err = errAEEventNotHandled; /* Nobody is home for that event */
- break; /* end of otherwise */
- } /* end of switch */
-
- if (err != noErr) /* See if any errors */
- err = AEPutParamPtr(reply,keyErrorNumber,typeShortInteger,(Ptr)&err,sizeof(short));/* Send back the error message */
-
- return(err); /* Return possible error */
- }
-
- /* ======================================================= */
- /* ======================================================= */
- $$CloseFile
-
-
-